package cn.wolfcode.trip.base.util;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.ServletContext;
import java.io.File;
import java.io.IOException;
import java.util.UUID;

/**
 * 文件上传工具
 */
public class UploadUtil {

	//常量,公共图片文件夹位置
	public static final String COMMON_PATH = "C:/img/";

	/**
	 * 处理文件上传
	 * 
	 * @param file
	 * @param basePath
	 *            存放文件的目录的绝对路径 servletContext.getRealPath("/upload")
	 * @return  123.png
	 */
	//basePath参数,放在绝对路径下
	public static String upload(MultipartFile file, String basePath) {
		//以随机数的形式,给图片设置名称
		String uuid = UUID.randomUUID().toString();

		//取出上传过来的文件的真实名称(filername)
		String orgFileName = file.getOriginalFilename();

		//获取文件后缀名(.jpg),  用.拼接起来
		String ext = "." + FilenameUtils.getExtension(orgFileName);

		//获取图片的完整地址
		String fileName = uuid + ext;//xxxxx.jsp
		try {
			//将路径和文件拼接起来
			//当前项目upload的文件
			File targetFile = new File(basePath, fileName);

			//把上传文件内容写入到targetFile(保存到当前项目的upload)
			FileUtils.writeByteArrayToFile(targetFile, file.getBytes());

			//把当前项目upload的图片,拷贝保存到本地的公共文件夹(upload)中
			// 目标文件:常量(地址),/upload + 文件名
			File descFile = new File(COMMON_PATH,"/upload/" + fileName);
			//targetFile  源文件           descFile 目标文件名
			FileUtils.copyFile(targetFile,descFile);

			//返回"/upload/" + 文件, 存进数据库
			return "/upload/" + fileName;

		} catch (IOException e) {
			e.printStackTrace();
		}
		return "";
	}

	/**
	 * 删除文件
	 * @param imagePath
     */
	public static void deleteFile(ServletContext servletContext, String imagePath) {
		String path = servletContext.getRealPath("/") + imagePath;
		File file = new File(path);
		if (file.exists()) {
			file.delete();
		}
	}
}
























